package lesbonsamis;

import java.util.ArrayList;
import java.util.List;

public class Algo2 {

	AB ab;

	public Algo2(Projet projet) {
		int[] depart = new int[projet.getParticipants().size()];
		int i = 0;

		for (Participant participant : projet.getParticipants()) {
			depart[i] = participant.getDifferentielVal().intValue();
			i++;
		}

		this.ab = new AB(depart);
	}

	public void calcul() {
		while (!ab.nulA()) {
			int min = ab.minA();
			int max = ab.maxA();
			int val = Math.min(Math.abs(ab.A[min]), Math.abs(ab.A[max]));
			ab.transaction(max, min, val);
		}
	}

	public void afficher() {
		ab.afficher();
		ab.verifier();
	}

	public List<TransactionCommand> transaction(Projet projet) {
		List<TransactionCommand> transactions = new ArrayList<TransactionCommand>();
		int taille = ab.A.length;

		for (int i = 0; i < taille; i++) {
			for (int j = 0; j < taille; j++) {
				if (ab.B[i][j] != 0) {
					TransactionCommand t = new TransactionCommand();
					t.setDonneur(projet.getParticipants().get(j));
					t.setReceveur(projet.getParticipants().get(i));
					t.setMontantVal(ab.B[i][j]);
					transactions.add(t);
				}
			}
		}

		return transactions;
	}
}
